import Vue from "vue";
import App from "./App";
import router from "./router";
import axios from "axios";
import ElementUI from "element-ui";
//import 'element-ui/lib/theme-chalk/index.css';    // 默认主题
import "../static/css/theme-green/index.css"; // 浅绿色主题
import "babel-polyfill";

Vue.use(ElementUI, { size: "small" });
Vue.prototype.$axios = axios;

//使用钩子函数对路由进行权限跳转
router.beforeEach((to, from, next) => {
    const role = localStorage.getItem("ms_username");
    if (!role && to.path !== "/login") {
        next("/login");
    } else if (to.meta.permission) {
        // 如果是管理员权限则可进入，这里只是简单的模拟管理员权限而已
        role === "admin" ? next() : next("/403");
    } else {
        // 简单的判断IE10及以下不进入富文本编辑器，该组件不兼容
        if (navigator.userAgent.indexOf("MSIE") > -1 && to.path === "/editor") {
            Vue.prototype.$alert(
                "vue-quill-editor组件不兼容IE10及以下浏览器，请使用更高版本的浏览器查看",
                "浏览器不兼容通知",
                {
                    confirmButtonText: "确定"
                }
            );
        } else {
            next();
        }
    }
});

window.vm = new Vue({
    router,
    render: h => h(App)
}).$mount("#app");
axios.defaults.baseURL = "http://localhost:8090";
//axios.defaults.headers.common["Authorization"] = localStorage.AUTH_TOKEN;//无用
// http request 拦截器
axios.interceptors.request.use(
    config => {
        let token = localStorage.getItem("AUTH_TOKEN");
        if (token) {  // 判断是否存在token，如果存在的话，则每个http header都加上token
          config.headers.Authorization = `${token}`;
        }
        return config;
    },
    error => {
        return Promise.reject(error.response);
    }
);
// http response 拦截器
axios.interceptors.response.use(
    response => {
        const newLocal = response.data.resultCode;
        if (newLocal == "404") {
            console.log("response.data.resultCode是404");
            vm.$router.push('/404');
            return;
        } else if(newLocal == "401"){
            console.log("response.data.resultCode是401");
            localStorage.removeItem('AUTH_TOKEN');
            localStorage.removeItem('ms_username');
            vm.$router.push('/login');
            return;
        }else {
            return response;
        }

        
    },
    error => {
        if(error.response){
            const newLocal = error.response.status;
            if (newLocal == "404") {
                console.log("response.data.status是404");
                vm.$router.push('/404');
                return;
            } else if(newLocal == "401"){
                console.log("response.data.status是401");
                localStorage.removeItem('AUTH_TOKEN');
                localStorage.removeItem('ms_username');
                vm.$router.push('/login');
                return;
            }
        }
        return Promise.reject(error.response); // 返回接口返回的错误信息
    }
);